import plugin from '../../../lib/plugins/plugin.js'
import fetch from 'node-fetch'

export class calc extends plugin {
    constructor() {
        super({
            /** 功能名称 */
            name: '计算器',
            /** 功能描述 */
            dsc: '加减乘除计算器',
            /** https://oicqjs.github.io/oicq/#events */
            event: 'message',
            /** 优先级，数字越小等级越高 */
            priority: 1000,
            rule: [
                {
                    /** 命令正则匹配 */
                    reg: '^[0-9\(\)\（\）\%]+(:?[\\+\\-\\*\\x\\/\\÷\(\)\（\）\.][0-9\(\)\（\）\%]+)+$',
                    /** 执行方法 */
                    fnc: 'calc'
                }
            ]
        })
    }

    /**
     * 
     * @param e oicq传递的事件参数e
     */
    async calc(e) {
        let emsg = this.e.msg.replace(/#|＃|计算|=/g, "");
        var regk = /[\（]/g, regk2 = /[\）]/g;
        emsg = emsg.replace(regk, "(").replace(regk2, ")").replace("%", "/100").replace("÷", "/").replace("x", "*").replace(/“|”/g, "\"");
        let res;
        try {
            if (!emsg.match(/[a-zA-Z]/g) || this.e.isMaster) {
                res = await eval(emsg);
            } else {
                this.e.reply("含有非法字符，无法计算");
                return true;
            }

        } catch (errorall) {
            this.e.reply(errorall.toString());
            return true;
        }
        if (res == emsg) {
            return true;
        }

        await this.e.reply(`计算结果：${JSON.stringify(res)}`);

        return true; //返回true 阻挡消息不再往下
    }
}
